package br.com.pfc.application.controller;

import br.com.pfc.application.service.SegurancaUsuarioService;
import br.com.pfc.model.Usuario;
import br.com.pfc.util.CriptografiaSHA;
import br.com.pfc.util.DataUtil;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.log.Log;
import org.jboss.seam.security.Identity;

/**
 *
 * @author Frederico Mucceli
 */
@Name("authenticator")
public class AuthenticationController extends BaseController implements Serializable {

    @Logger
    private Log log;
    @In
    private SegurancaUsuarioService segurancaUsuarioService;
    @In
    private Identity identity;
    public static String dataAtual;

    public String logoff() {
        adicionarMensagemInformacao("Faça seu login para voltar ao sistema!");
        //TODO liberar dependencias sessoes e etc..
        return "return";
    }

    public AuthenticationController() {
        setDataAtual(obterDataAtual());
    }

    public String getDataAtual() {
        return dataAtual;
    }

    public void setDataAtual(String dataAtual) {
        this.dataAtual = dataAtual;
    }

    public Identity getIdentity() {
        return identity;
    }

    public void setIdentity(Identity identity) {
        this.identity = identity;
    }

    public String obterDataAtual() {

        DataUtil data = new DataUtil();
        SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
        return formatador.format(data.obtemDataAtual());
    }

    /**
     * Método para autenticação de usuários no sistema.
     * @return True caso a autenticação ocorra com sucesso, false caso contrário
     */
    public boolean authenticate() {
        String nomeUsuario = identity.getCredentials().getUsername();
        String senhaUsuario = identity.getCredentials().getPassword();

        if (log.isDebugEnabled()) {
            log.info("Invocando service para buscar o usuario");
            log.info("autenticando usuario: " + nomeUsuario);
        }

        //String senhaCriptografada = CriptografiaSHA.criptografar(senhaUsuario);
        Usuario usuarioLogado = segurancaUsuarioService.obterUsuario(nomeUsuario, senhaUsuario);

        if (usuarioLogado != null) {
            return true;
        } else {
            return false;
        }
    }
}
